package main

import (
	"fmt"
)

/**
执行用时：0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗：2.3 MB, 在所有 Go 提交中击败了23.30%的用户
 */
func subsets(nums []int) [][]int {

	ans := [][]int{}
	n := len(nums)
	for i := 0; i < (1 << n); i++ {
		path := []int{}
		for j := 0; j < n; j++ {
			if (i >> j & 1) == 1 {
				path = append(path, nums[j])
			}
		}
		ans = append(ans, path)
	}
	return ans
}

func main() {

	nums := []int{1, 2, 3}
	fmt.Println(subsets(nums))
}
